This disclosure is related in general to cloud-based processing, and, but not by way of limitation, to parallel processing of multiple services by multiple computing devices.
In some computer systems, processing may be linear. In such systems, before a second process begins, the entirety of a first process may need to be completed. Take for example the transcoding and transfer of large media files. If a computer system is transcoding (e.g., converting media files from one format to another) and transferring a number of large media files, the process may involve several steps, such as: 1) transcode the first file; 2) transfer the first file; 3) transcode the second file; and 4) transfer the second file. This process may continue for every how many files need to be transcoded and transferred. Further, a step may not be performed until the previous step has finished in its entirety. In this example, the transcoding of the second file may not begin until the first file has been completely transferred.
Such a process may result in significant inefficiencies. For example, if it takes a significant amount of time to transfer the first file (perhaps due to the size of the file, network congestion, or some other factor), processing resources may sit idle and the amount of time to complete the process of transcoding and transferring may be high.